home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland Pascal with Objects 7.0 / RWDOC.ZIP / BWCCAPI.RW next >
Text File  |  1992-10-27  |  33KB  |  1,142 lines

  1.                            BWCCAPI.RW
  2.                            ==========
  3.  
  4.  
  5. This file describes technical aspects of the Borland Windows
  6. Custom Controls (BWCC) and contains information that might be
  7. useful or of interest to the advanced resource designer. You can,
  8. however, successfully create or modify application resources for
  9. BWCC using the information contained in the file MANUAL.RW.
  10.  
  11.  
  12. 1        Defining a derivative dialog class
  13. -------------------------------------------
  14.  
  15. To create your own dialog window class (for example, if you want
  16. the dialog box to have its own icon), you must "derive" your
  17. class from the BORDLG class.
  18.  
  19. To derive a class from BORDLG, do the following:
  20.  
  21. 1.  Your dialog window function should call BWCCDefDlgProc, not
  22.     the Windows standard DefDlgProc for messages that it does not
  23.     process.
  24.  
  25. 2.  The window proc must call BWCCDefDlgProc for the following
  26.     messages:
  27.  
  28.     WM_CTLCOLOR
  29.     WM_NCCREATE
  30.     WM_NCDESTROY
  31.     WM_PAINT
  32.     WM_ERASEBKGND
  33.     
  34.  
  35. 2        Technical description of Borland Windows Custom Controls
  36. -----------------------------------------------------------------
  37.  
  38. Section 3 through section 7 contains descriptions of each of the
  39. Borland Windows Custom Controls classes. Most of the subsection
  40. headings are self-explanatory, with the possible exception of the
  41. following:
  42.  
  43. - "Class Name" gives the Resource Workshop name in quotation
  44.   marks, followed by the identifier name--C define or Pascal
  45.   constant.
  46.  
  47. - "Window styles" include "Types" and "Options." Within each
  48.   class there may be several "types" of controls.  Types dictate
  49.   the overall appearance and functionality of the control.
  50.   Options are those available to each type of control.
  51.  
  52. - "Messages" include "Commands" and "Notifications." Commands are
  53.   messages to a control. Notifications are a special type of
  54.   WM_COMMAND message used by controls. The control ID of the
  55.   control is passed in the wParam of the message, while the
  56.   lParam contains both the notification type and the window
  57.   handle of the control. The notification type is contained in
  58.   the high-order word of lParam and can be extracted using the
  59.   HIWORD macro; the window handle is contained in the low-order
  60.   word of lParam and can be extracted using the LOWORD macro.
  61.  
  62.  
  63. 3        BORBTN control
  64. -----------------------
  65.  
  66. Function:          bitmapped push buttons and "splash panels"
  67.  
  68. Class Name:        "borbtn" ( BUTTON_CLASS )
  69.  
  70.  
  71. 3.1      Window styles
  72. ----------------------
  73.  
  74. 3.1.1    Types inherited from standard Windows controls
  75. -------------------------------------------------------
  76.  
  77. 3.1.1.1  BS_DEFPUSHBUTTON and BS_PUSHBUTTON
  78. -------------------------------------------
  79.  
  80. These types define the two standard Windows push button types:
  81.  
  82. - BS_DEFPUSHBUTTON
  83. - BS_PUSHBUTTON
  84.  
  85. The BS_DEFPUSHBUTTON type identifies the "default" push button.
  86. When the user presses the Enter key in a dialog box, the default
  87. button's ID is in the wParam of the WM_COMMAND message sent to
  88. the button's parent window. The Windows dialog manager sends a
  89. BN_CLICKED notification from that button to the dialog window.
  90.  
  91. There are two exceptions:
  92.  
  93. - If another button gains keyboard focus through a Tab keystroke,
  94.   that key temporarily becomes the default button and is
  95.   referenced in the BN_CLICKED notification.
  96.  
  97. - If keyboard focus is in an edit control for which the
  98.   ES_WANTRETURN flag is set, the Enter key inserts a carriage
  99.   return into the text in the edit control.
  100.  
  101.  
  102. 3.1.2    Types unique to BWCC
  103. -----------------------------
  104.  
  105. 3.1.2.1  BBS_BITMAP
  106. -------------------
  107.  
  108. This type is used to display "splash panels," which are bitmaps
  109. the user does not interact with.
  110.  
  111.  
  112. 3.1.3    Options inherited from standard Windows controls
  113. ---------------------------------------------------------
  114.  
  115. [none]
  116.  
  117.  
  118. 3.1.4    Options unique to BWCC
  119. -------------------------------
  120.  
  121. 3.1.4.1  BBS_PARENTNOTIFY
  122. -------------------------
  123.  
  124. This option causes the control to generate the following
  125. notification messages at run time:
  126.  
  127. - BBN_SETFOCUS
  128. - BBN_SETFOCUSMOUSE
  129. - BBN_GOTATAB
  130. - BBN_GOTABTAB
  131.  
  132. These notifications are described in section 3.2.4.
  133.  
  134.  
  135. 3.1.4.2  BBS_OWNERDRAW
  136. ----------------------
  137.  
  138. This option causes the control to send WM_DRAWITEM to its parent
  139. at run time, for specialized drawing.
  140.  
  141.  
  142. 3.2      Messages
  143. -----------------
  144.  
  145. 3.2.1    Commands inherited from standard Windows controls
  146. ----------------------------------------------------------
  147.  
  148. 3.2.1.1  BM_SETSTYLE
  149. --------------------
  150.  
  151. The Windows dialog manager uses this message to toggle between
  152. the BS_DEFPUSHBUTTON and BS_PUSHBUTTON types.
  153.  
  154.  
  155. 3.2.1.2  BM_SETSTATE
  156. --------------------
  157.  
  158. This message changes the "highlight" state of a button. If the
  159. wParam of the message is nonzero, the button is highlighted
  160. (drawn as if it were pressed).
  161.  
  162.  
  163. 3.2.1.3  BM_GETSTATE
  164. --------------------
  165.  
  166. This message determines whether a button is highlighted, has
  167. focus, and whether it is "checked" (checking does not, however,
  168. apply to buttons). The 0x0004 bit of the return value indicates
  169. that the button is highlighted (drawn with a heavy outline around
  170. the button); the 0x0008 bit indicates that the button has the
  171. focus (a dotted line surrounds the text caption).
  172.  
  173.  
  174. 3.2.2    Commands unique to BWCC
  175. --------------------------------
  176.  
  177.  
  178. 3.2.2.1  BBM_SETBITS
  179. --------------------
  180.  
  181. The application uses this message to pass a set of bitmap handles
  182. to the button. Normally, the buttons use the button control ID to
  183. automatically load bitmaps from the user's resources. If the
  184. bitmaps do not exist, the button caption is drawn into a default
  185. bitmap by using a lighter-weight version of the dialog font.
  186.  
  187. To use this message, you must first create three bitmap images of
  188. a single button:
  189.  
  190. - the button without keyboard focus
  191. - the button with keyboard focus, but not pressed
  192. - the button when it is "pressed" (or highlighted)
  193.  
  194. After creating the bitmaps, you must put the handles to these
  195. bitmaps into an array and pass a far pointer to this array in the
  196. lParam of the BM_SETBITS message.
  197.  
  198. The following C and Pascal samples show how this is done:
  199.  
  200. C SAMPLE
  201. --------
  202.  
  203.     HBITMAP hBits[3];
  204.     HWND  hWndButton = GetDlgItem( hWnd, ID_FOO);
  205.  
  206.  
  207.     hBits[0] = MakeNormalBitmap(...);
  208.     hBits[1] = MakeHighlightBitmap(...);
  209.     hBits[2] = MakeFocusBitmap(...);
  210.  
  211.  
  212.     SendMessage( hWndButton, BBM_SETBITS, 0, (LONG) (LPSTR)
  213.          hBits);
  214.  
  215. PASCAL SAMPLE
  216. -------------
  217.  
  218.     procedure SetBitmaps(Wnd: HWnd);
  219.     var
  220.      Bits: array[0..2] of HBitmap;
  221.      WndButton: HWnd;
  222.     begin
  223.      WndButton := GetDlgItem(Wnd, id_Foo);
  224.      Bits[0] := MakeNormalBitmap(...);
  225.      Bits[1] := MakeHighlightBitmap(...);
  226.      Bits[2] := MakeFocusBitmap(...);
  227.      SendMessage(WndButton, BBM_SETBITS, 0, @@Bits);
  228.     end;
  229.  
  230. NOTE: If a button's bitmaps are initialized in this manner, the
  231. application must destroy the bitmaps by calling DeleteObject
  232. before it terminates. The application typically makes this call
  233. in the WM_DESTROY message handler for the button's parent window.
  234.  
  235.  
  236. 3.2.3    Notifications inherited from standard Windows controls
  237. ---------------------------------------------------------------
  238.  
  239. 3.2.3.1  BN_CLICKED
  240. -------------------
  241.  
  242. The button sends this message when it has been "pressed" by the
  243. user, either by clicking while the mouse pointer is within the
  244. button window or by either of the following keyboard actions:
  245.  
  246. - The user presses the Spacebar or the Enter key when the button
  247.   has keyboard focus.
  248.  
  249. - The user presses the button's accelerator key when keyboard
  250.   focus is in another control.
  251.  
  252. To associate an accelerator key with a button, place an ampersand
  253. before the ASCII value of the key in the button's text (for
  254. example, "&Yes"). Note that case is not significant for button
  255. accelerators.
  256.  
  257. 3.2.3.2  BN_DOUBLECLICKED
  258. -------------------------
  259.  
  260. The button sends this message when it has been double-clicked by
  261. the user.  The notification is sent at the time of the second
  262. mouse button-down message.
  263.  
  264.  
  265. 3.2.4    Notifications unique to BWCC
  266. -------------------------------------
  267.  
  268. The following notifications are available if you've specified the
  269. BBS_PARENTNOTIFY style.
  270.  
  271.  
  272. 3.2.4.1  BBN_SETFOCUS
  273. ---------------------
  274.  
  275. The button sends this notification to its parent window when it
  276. gains keyboard focus through an action other than a mouse click.
  277.  
  278.  
  279. 3.2.4.2  BBN_SETFOCUSMOUSE
  280. --------------------------
  281.  
  282. The button sends this notification to its parent window when it
  283. gains keyboard focus through a mouse click.
  284.  
  285.  
  286. 3.2.4.3  BBN_GOTATAB
  287. --------------------
  288.  
  289. The button sends this notification to its parent window when the
  290. user presses the <Tab> key while keyboard focus is in the button.
  291. The parent can then intervene in the processing of the keystroke
  292. by returning a nonzero value.
  293.  
  294.  
  295. 3.2.4.4  BBN_GOTABTAB
  296. ---------------------
  297.  
  298. The button sends this notification to its parent window when the
  299. user presses Shift-Tab (back-tab) while keyboard focus is in the
  300. button. The parent can then intervene in the processing of the
  301. keystroke by returning a nonzero value.
  302.  
  303.  
  304. 3.2.4.5  WM_DRAWITEM
  305. --------------------
  306.  
  307. If you specify the BBS_OWNERDRAW style for the button, it sends a
  308. WM_DRAWITEM message to its parent window. The lParam of the
  309. message contains a far pointer to a DRAWITEMSTRUCT structure.
  310.  
  311. The fields of that structure are described in the Windows SDK
  312. documentation for this message, but with the following
  313. enhancement:
  314.  
  315. For Windows owner-draw buttons, the itemID field of the
  316. DRAWITEMSTRUCT structure is unused. Borland buttons use this
  317. field to pass their type. If the button is a default push button,
  318. this field contains the value BS_DEFPUSHBUTTON. Otherwise, it
  319. contains the value BS_PUSHBUTTON.
  320.  
  321. The other fields and the values passed in them are
  322.  
  323.       CtlType      ODT_BUTTON
  324.  
  325.       CtlID        The control ID of the button
  326.                         (GetWindowWord(hWnd, GWW_ID))
  327.  
  328.       itemAction   ODA_DRAWENTIRE, unless the repaint is being
  329.                    caused by a focus change, in which case this
  330.                    field contains ODA_FOCUS
  331.  
  332.       itemState    The combination of the following values,
  333.                    depending on the current state of the button:
  334.  
  335.                    ODS_FOCUS if the button has keyboard focus
  336.                    ODS_DISABLED if the button is disabled
  337.                    ODS_SELECTED if the button is highlighted
  338.  
  339.       hwndItem     The window handle of the control
  340.  
  341.       hDC          A device context for the window, with all
  342.                    values in the default state returned by GetDC
  343.  
  344.       rcItem       The client rectangle of the control
  345.  
  346.  
  347. 3.3      Button resource Id numbering scheme
  348. --------------------------------------------
  349.  
  350. The Microsoft resource compiler does not provide user-specified
  351. control initialization data when it parses the Windows dialog
  352. template data structure. Because of this, Resource Workshop uses
  353. the control ID field as a base from which to derive the resource
  354. IDs of the bitmaps required by a button. For each bitmap button,
  355. there are six images: three for EGA and monochrome devices, and
  356. three for VGA and higher-resolution devices.
  357.  
  358. The bitmap resource IDs are derived from the button control using
  359. the following formulas:
  360.  
  361.    Control ID + 1000: Normal VGA-resolution image
  362.    Control ID + 3000: Pressed VGA-resolution image
  363.    Control ID + 5000: Focused VGA-resolution image
  364.  
  365.    Control ID + 2000: Normal EGA-resolution image
  366.    Control ID + 4000: Pressed EGA-resolution image
  367.    Control ID + 6000: Focused EGA-resolution image
  368.  
  369.  
  370. 4        BORRADIO control
  371. -------------------------
  372.  
  373. Function: Better-looking radio buttons
  374.  
  375. Class Name: "borradio" ( RADIO_CLASS )
  376.  
  377.  
  378. 4.1      Window Styles
  379. ----------------------
  380.  
  381. 4.1.1    Types inherited from standard Windows controls
  382. -------------------------------------------------------
  383.  
  384. 4.1.1.1  BS_RADIOBUTTON
  385. -----------------------
  386.  
  387. A nonautomatic radio button. The button merely informs the
  388. application program that it has been "checked" (pressed) via the
  389. BN_CLICKED notification. The application is responsible for
  390. calling the CheckRadioButton function to change the button's
  391. state and the state of the other buttons it is grouped with.
  392.  
  393.  
  394. 4.1.1.2  BS_AUTORADIOBUTTON
  395. ---------------------------
  396.  
  397. An "automatic" radio button. When the user selects one of these
  398. buttons, it is automatically marked (with a circle or diamond),
  399. and the previously selected button within the group is
  400. deselected, without the intervention of the application program.
  401.  
  402.  
  403. 4.1.2    Types unique to BWCC
  404. -----------------------------
  405.  
  406. [none]
  407.  
  408.  
  409. 4.1.3    Options inherited from standard Windows controls
  410. ---------------------------------------------------------
  411.  
  412. 4.1.3.1  BS_LEFTTEXT
  413. --------------------
  414.  
  415. This option causes the text associated with the button to be
  416. displayed to the left of the button, rather than to the right of
  417. the button.
  418.  
  419.  
  420. 4.1.4    Options unique to BWCC
  421. -------------------------------
  422.  
  423. 4.1.4.1  BBS_PARENTNOTIFY
  424. -------------------------
  425.  
  426. This option causes the control to generate the following
  427. notification messages at run time:
  428.  
  429. - BBN_SETFOCUS
  430. - BBN_SETFOCUSMOUSE
  431. - BBN_GOTATAB
  432. - BBN_GOTABTAB
  433.  
  434. These notifications are described in section 3.2.4.
  435.  
  436.  
  437. 4.1.4.2  BBS_OWNERDRAW
  438. ----------------------
  439.  
  440. This option causes the control to send WM_DRAWITEM to its parent
  441. at run time, for specialized drawing.
  442.  
  443.  
  444. 4.2      Messages
  445. -----------------
  446.  
  447. 4.2.1    Commands inherited from standard Windows controls
  448. ----------------------------------------------------------
  449.  
  450. 4.2.1.1  BM_GETCHECK
  451. --------------------
  452.  
  453. This message causes the button to return its current "check"
  454. state (the message names and descriptions all use check box
  455. imagery). If it is checked (pressed), it returns a nonzero value.
  456. Otherwise, it returns zero.
  457.  
  458.  
  459. 4.2.1.2  BM_SETCHECK
  460. --------------------
  461.  
  462. This message changes the check state of a button. If the wParam
  463. of the message is nonzero, the button is checked (filled with a
  464. circle or a diamond).
  465.  
  466.  
  467. 4.2.1.3  BM_GETSTATE
  468. --------------------
  469.  
  470. This message determines whether a button is highlighted, has
  471. focus, and whether it is checked.  The low-order two bits (0x0003)
  472. of the return value contain the check state:  0 indicates
  473. unchecked and 1 indicates checked.  The 0x0004 bit of the return
  474. value indicates that the button is highlighted (drawn with a heavy
  475. outline around the circle or diamond); the 0x0008 bit indicates
  476. that the button has the focus (a dotted line surrounds the text
  477. caption).
  478.  
  479.  
  480. 4.2.1.4  BM_SETSTATE
  481. --------------------
  482.  
  483. This message changes the highlight state of a button. If the
  484. wParam of the message is nonzero, the button is highlighted.
  485.  
  486.  
  487. 4.2.2    Commands unique to BWCC
  488. --------------------------------
  489.  
  490. [none]
  491.  
  492.  
  493. 4.2.3    Notifications inherited from standard Windows controls
  494. ---------------------------------------------------------------
  495.  
  496. 4.2.3.1  BN_CLICKED
  497. -------------------
  498.  
  499. See the description of BN_CLICKED in section 3.2.3.1 of this
  500. file.
  501.  
  502. 4.2.3.2  BN_DOUBLECLICKED
  503. -------------------------
  504.  
  505. See the description of BN_DOUBLECLICKED in section 3.2.3.2 of
  506. this file.
  507.  
  508.  
  509. 4.2.4    Notifications unique to BWCC
  510. -------------------------------------
  511.  
  512. The following notifications are sent to the parent window only if
  513. the programmer has specified the BBS_PARENTNOTIFY style.
  514.  
  515. - BBN_SETFOCUS
  516. - BBN_SETFOCUSMOUSE
  517. - BBN_GOTATAB
  518. - BBN_GOTABTAB
  519.  
  520. For a description of these notifications, see section 3.2.4 of
  521. this file.
  522.  
  523.  
  524. 4.2.4.1  WM_DRAWITEM
  525. --------------------
  526.  
  527. The description of this notification is identical to that
  528. contained in section 3.2.4.5, with the following exception:
  529.  
  530. For automatic radio buttons, the itemID field of the
  531. DRAWITEMSTRUCT structure contains the value BS_AUTORADIOBUTTON.
  532. Otherwise, it contains the value BS_RADIOBUTTON.
  533.  
  534.  
  535. 5        BORCHECK control
  536. -------------------------
  537.  
  538. Function: Better-looking check boxes
  539.  
  540. Class Name: "borcheck" ( CHECK_CLASS )
  541.  
  542.  
  543. 5.1      Window Styles
  544. ----------------------
  545.  
  546. 5.1.1    Types inherited from standard Windows controls
  547. -------------------------------------------------------
  548.  
  549. 5.1.1.1  BS_CHECKBOX
  550. --------------------
  551.  
  552. A nonautomatic check box. Application program intervention is
  553. required to change its visual state after it has been "clicked."
  554.  
  555.  
  556. 5.1.1.2  BS_AUTOCHECKBOX
  557. ------------------------
  558.  
  559. A check box that automatically changes its state when "clicked."
  560.  
  561.  
  562. 5.1.1.3  BS_3STATE
  563. ------------------
  564.  
  565. A nonautomatic check box that switches between three states:
  566. checked, unchecked, and indeterminate.
  567.  
  568.  
  569. 5.1.1.4  BS_AUTO3STATE
  570. ----------------------
  571.  
  572. An automatic version of BS_3STATE.
  573.  
  574.  
  575. 5.1.2    Types unique to BWCC
  576. -----------------------------
  577.  
  578. [none]
  579.  
  580.  
  581. 5.1.3    Options inherited from standard Windows controls
  582. ---------------------------------------------------------
  583.  
  584.  
  585. 5.1.3.1  BS_LEFTTEXT
  586. --------------------
  587.  
  588. This option causes the text associated with the button to be
  589. displayed to the left of the button, rather than to the right of
  590. the button.
  591.  
  592.  
  593. 5.1.4    Options unique to BWCC
  594. -------------------------------
  595.  
  596.  
  597. 5.1.4.1  BBS_PARENTNOTIFY
  598. -------------------------
  599.  
  600. This option causes the control to generate the following
  601. notification messages at run time:
  602.  
  603. - BBN_SETFOCUS
  604. - BBN_SETFOCUSMOUSE
  605. - BBN_GOTATAB
  606. - BBN_GOTABTAB
  607.  
  608.  
  609. 5.1.4.2  BBS_OWNERDRAW
  610. ----------------------
  611.  
  612. This option causes the control to send WM_DRAWITEM to its parent
  613. at run time, for specialized drawing.
  614.  
  615.  
  616. 5.2      Messages
  617. -----------------
  618.  
  619. 5.2.1    Commands inherited from standard Windows controls
  620. ----------------------------------------------------------
  621.  
  622. 5.2.1.1  BM_GETCHECK
  623. --------------------
  624.  
  625. This message causes the control to return its current "check"
  626. state.  The return value is 0 if the control is unchecked; 1 if
  627. checked; and 2 if indeterminate (applies only for 3-state
  628. check boxes).
  629.  
  630.  
  631. 5.2.1.2  BM_SETCHECK
  632. --------------------
  633.  
  634. This message changes the state of a check box. If the wParam of
  635. the message is 0, the check box is drawn empty; if 1, the check
  636. box is checked; and if 2, it is drawn with with a pattern
  637. indicating the indeterminate state.
  638.  
  639.  
  640. 5.2.1.3  BM_GETSTATE
  641. --------------------
  642.  
  643. This message determines whether a check box is highlighted, has
  644. focus, and whether it is checked.  The low-order two bits (0x0003)
  645. of the return value contain the check state:  0 indicates
  646. unchecked; 1 indicates checked; and 2 indicates the indeterminate
  647. state for 3-state check boxes. The 0x0004 bit of the return value
  648. indicates that the check box is highlighted (drawn with a heavy
  649. outline); the 0x0008 bit indicates that the button has the focus
  650. (a dotted line surrounds the text caption).
  651.  
  652.  
  653. 5.2.1.4  BM_SETSTATE
  654. --------------------
  655.  
  656. This message changes the highlight state of a check box. If the
  657. wParam of the message is a nonzero value, the check box is
  658. highlighted.
  659.  
  660.  
  661. 5.2.2    Commands unique to BWCC
  662. --------------------------------
  663.  
  664. [none]
  665.  
  666.  
  667. 5.2.3    Notifications inherited from standard Windows controls
  668. ---------------------------------------------------------------
  669.  
  670.  
  671. 5.2.3.1  BN_CLICKED
  672. -------------------
  673.  
  674. See the description of BN_CLICKED in section 3.2.3.1 of this
  675. file.
  676.  
  677. 5.2.3.2  BN_DOUBLECLICKED
  678. -------------------------
  679.  
  680. See the description of BN_DOUBLECLICKED in section 3.2.3.2 of
  681. this file.
  682.  
  683.  
  684. 5.2.4    Notifications unique to BWCC
  685. -------------------------------------
  686.  
  687. The following notifications are sent to the parent window only if
  688. the programmer has specified the BBS_PARENTNOTIFY style:
  689.  
  690. - BBN_SETFOCUS
  691. - BBN_SETFOCUSMOUSE
  692. - BBN_GOTATAB
  693. - BBN_GOTABTAB
  694.  
  695. For a description of these notifications, see section 3.2.4 of
  696. this file.
  697.  
  698.  
  699. 5.2.4.1  WM_DRAWITEM
  700. --------------------
  701.  
  702. The description of this notification is identical to that
  703. contained in section 3.2.4.5, with the following exception:
  704.  
  705. For automatic check boxes, the itemID field of the DRAWITEMSTRUCT
  706. structure contains the value BS_AUTOCHECKBOX or BS_AUTO3STATE.
  707. Otherwise, it contains the value BS_CHECKBOX or BS_3STATE.
  708.  
  709.  
  710. 6        BORSHADE control
  711. -------------------------
  712.  
  713. Function: panels and dividers
  714.  
  715. Class Name: "borshade" ( SHADE_CLASS )
  716.  
  717.  
  718. 6.1      Window styles
  719. ----------------------
  720.  
  721. 6.1.1    Types inherited from standard Windows controls
  722. -------------------------------------------------------
  723.  
  724. [none]
  725.  
  726.  
  727. 6.1.2    Types unique to BWCC
  728. -----------------------------
  729.  
  730.  
  731. 6.1.2.1  BSS_GROUP
  732. ------------------
  733.  
  734. This style draws a "chiseled" gray box with a recessed appearance.
  735.  
  736.  
  737. 6.1.2.2  BSS_RGROUP
  738. -------------------
  739.  
  740. This style draws a "chiseled" gray box with a raised appearance.
  741.  
  742.  
  743. 6.1.2.3  BSS_HDIP
  744. -----------------
  745.  
  746. This style draws a horizontal dividing line that can be used to
  747. separate sections of a dialog box.
  748.  
  749.  
  750. 6.1.2.4  BSS_VDIP
  751. -----------------
  752.  
  753. This style draws a vertical dividing line that can be used to
  754. separate sections of a dialog box.
  755.  
  756.  
  757. 6.1.2.5  BSS_HBUMP
  758. ------------------
  759.  
  760. This style draws a horizontal dividing line that can be used to
  761. separate sections of a gray group shade (BSS_GROUP or 
  762. BSS_RGROUP).
  763.  
  764.  
  765. 6.1.2.6  BSS_VBUMP
  766. ------------------
  767.  
  768. This style draws a vertical dividing line that can be used to
  769. separate sections of a gray group shade (BSS_GROUP or 
  770. BSS_RGROUP).
  771.  
  772.  
  773. 6.1.3    Options inherited from standard Windows controls
  774. ---------------------------------------------------------
  775.  
  776. [none]
  777.  
  778.  
  779. 6.1.4    Options unique to BWCC
  780. -------------------------------
  781.  
  782.  
  783. 6.1.4.1 BSS_CAPTION
  784. -------------------
  785.  
  786. This option applies only to the BSS_GROUP and BSS_RGROUP types.
  787. It causes the caption of the group shade box (if any) to be
  788. appear above the recessed (or raised) portion of the box.  The
  789. dimensions of the box include the caption as well as the box.
  790.  
  791.  
  792. 6.1.4.2 BSS_CTLCOLOR
  793. --------------------
  794.  
  795. This option applies only to the BSS_GROUP and BSS_RGROUP types.
  796. It causes the control to send registered messages to its parent
  797. prior to erasing.  The parent can then provide a different brush
  798. for painting the group box background, and make other changes to
  799. the HDC as needed.  To use this mechanism, you must first
  800. register a special message using the Windows
  801. RegisterWindowMessage() API.  In the file BWCC.H you will find
  802. the following definition:
  803.  
  804.    #define BWCC_CtlColor_Shade "BWCC_CtlColor_Shade"
  805.  
  806. Include the following static declaration in your program (the 
  807. following examples are in C):
  808.  
  809.    WORD hCtlColor_Shade;
  810.  
  811. Then, in your application initialization function, register the
  812. message:
  813.  
  814.    hCtlColor_Shade = RegisterWindowMessage(BWCC_CtlColor_Shade);
  815.  
  816. In your window procedure, dialog box window procedure, or most
  817. commonly your dialog procedure, test for the message:
  818.  
  819.    if (msg == hCtlColor_Shade)
  820.    {
  821.    ...
  822.    }
  823.  
  824. The parameters for the message are the same as for WM_CTLCOLOR,
  825. and the message is handled in the same manner.  For example, the
  826. text foreground and background colors and the background mode in
  827. the HDC may be modified, in order to change the appearance of the
  828. caption.  A background brush may be also returned.  (As with
  829. normal WM_CTLCOLOR handling, be sure not to create a new brush
  830. every time the message is processed.)
  831.  
  832. In order to return a brush from a dialog procedure (as opposed to
  833. from a dialog box window procedure or a window procedure), you
  834. must place the value of the brush into offset DWL_MSGRESULT in
  835. the window structure with SetWindowLong() and then return TRUE.
  836. Here is an example:
  837.  
  838.    if (msg == hCtlColor_Shade)
  839.    {
  840.       SetTextColor( (HDC) wParam, RGB(255,0,0) ); // red text
  841.       SetBkColor( (HDC) wParam, RGB(128,128,128) ); // gray
  842.       SetBkMode ( (HDC) wParam, OPAQUE);
  843.       SetWindowLong( hwndDlg, DWL_MSGRESULT,
  844.                      GetStockObject(WHITE_BRUSH) );
  845.       return TRUE;
  846.    }
  847.  
  848. The Windows include files provide a macro that combines the last
  849. two steps:  SetDlgMsgResult(hwnd, msg, result), which you would
  850. use with hCtlColor_Shade as the second parameter.
  851.  
  852.  
  853.  
  854. 6.1.4.3 BSS_NOPREFIX
  855. --------------------
  856.  
  857. This option applies only to the BSS_GROUP and BSS_RGROUP types,
  858. and is the equivalent of the SS_NOPREFIX option for static text:
  859. it causes any ampersands (&) within the caption to be treated as
  860. normal characters, rather than causing the next character to be
  861. underlined.
  862.  
  863.  
  864. 6.1.4.4 BSS_LEFT, BSS_CENTER, BSS_RIGHT
  865. ---------------------------------------
  866.  
  867. These options apply only to the BSS_GROUP and BSS_RGROUP types,
  868. and control the horizontal placement of the caption.
  869.  
  870.  
  871. 6.2      Messages
  872. -----------------
  873.  
  874. 6.2.1    Commands inherited from standard Windows controls
  875. ----------------------------------------------------------
  876.  
  877. [none]
  878.  
  879.  
  880. 6.2.2    Commands unique to BWCC
  881. --------------------------------
  882.  
  883. 6.2.2.1  RegisterWindowMessage(BWCC_CtlColor_Shade)
  884. ---------------------------------------------------
  885.  
  886. See the description of this message in section 6.1.4.2.
  887.  
  888.  
  889.  
  890. 7        BORSTATIC control
  891. --------------------------
  892.  
  893. Function: static text with a gray background
  894.  
  895. Class Name: "borstatic" ( STATIC_CLASS )
  896.  
  897.  
  898. 7.1      Window styles
  899. ----------------------
  900.  
  901. 7.1.1    Types inherited from standard Windows controls
  902. -------------------------------------------------------
  903.  
  904.  
  905. 7.1.1.1  SS_LEFT
  906. ----------------
  907.  
  908. The text is left-justified within the control.
  909.  
  910.  
  911. 7.1.1.2  SS_RIGHT
  912. -----------------
  913.  
  914. The text is right-justified within the control.
  915.  
  916.  
  917. 7.1.1.3  SS_CENTER
  918. ------------------
  919.  
  920. The text is center-justified within the control.
  921.  
  922.  
  923. 7.1.1.4  SS_SIMPLE
  924. ------------------
  925.  
  926. The text is left-justified in a single line within the control
  927. and does not word wrap.
  928.  
  929. 7.1.1.5  SS_LEFTNOWORDWRAP
  930. --------------------------
  931.  
  932. The text is left-justified within the control and does not
  933. word wrap.
  934.  
  935.  
  936. 7.1.2    Types unique to BWCC
  937. -----------------------------
  938.  
  939. [none]
  940.  
  941.  
  942. 7.1.3    Options inherited from standard Windows controls
  943. ---------------------------------------------------------
  944.  
  945. 7.1.3.1  SS_NOPREFIX
  946. --------------------
  947.  
  948. Ampersands (&) within the text do not cause the following
  949. character to be underlined.
  950.  
  951.  
  952. 7.1.4    Options unique to BWCC
  953. -------------------------------
  954.  
  955. [none]
  956.  
  957.  
  958. 8        BORDLG dialog class
  959. ----------------------------
  960.  
  961. Function: "Turbo" fast dialog box drawing
  962.  
  963. Class Name: "bordlg" ( BORDLGCLASS )
  964.  
  965. This custom dialog window class implements the "turbo painting"
  966. of Borland custom controls by keeping its own private list of
  967. controls within a dialog box and painting those controls itself.
  968. It also automatically provides a patterned background on VGA and
  969. higher-resolution displays. If you want your dialogs to have the
  970. "Borland look," specify this dialog class in your dialog box
  971. template.  (As an alternative to specifying "bordlg" as the
  972. class, you may also call BWCCDefDlgProc(), as discussed in
  973. section 1 of this file).
  974.  
  975.  
  976. 8.1      Window Styles
  977. ----------------------
  978.  
  979. 8.1.1    Types inherited from standard Windows controls
  980. -------------------------------------------------------
  981.  
  982. All valid styles for a standard Windows dialog box.
  983.  
  984.  
  985. 8.1.2    Types unique to BWCC
  986. -----------------------------
  987.  
  988. [none]
  989.  
  990.  
  991. 8.2      Messages
  992. -----------------
  993.  
  994. 8.2.1    Commands inherited from standard Windows controls
  995. ----------------------------------------------------------
  996.  
  997. 8.2.1.1  WM_CTLCOLOR
  998. --------------------
  999.  
  1000. If the user has provided a dialog procedure, it is called with
  1001. the WM_CTLCOLOR message.  If it returns a non-zero value, then
  1002. no further processing takes place, and that value is returned.
  1003.  
  1004. Otherwise, the processing depends on which CTCOLOR value is
  1005. specified.  For list boxes, the background is set to a gray
  1006. brush.  For static and button controls, the background mode is
  1007. set to transparent; the text color to COLOR_WINDOWTEXT; for non-
  1008. monochrome monitors, the background color is set to
  1009. COLOR_GRAYTEXT; and a gray background brush is returned.
  1010.  
  1011. For CTLCOLOR_DLG, the steel-gray dialog background brush is
  1012. returned, but it is first unrealized and the origin of the HDC
  1013. is reset to match the dialog box.
  1014.  
  1015. For other CTLCOLOR values, DefWindowProc() is called and its
  1016. value returned.
  1017.  
  1018.  
  1019. 8.2.1.2  WM_NCCREATE
  1020. --------------------
  1021.  
  1022. This message sets up a structure, which is attached as a property
  1023. to the dialog window.  As Borland controls are then created, they
  1024. will register themselves with the dialog window, and information
  1025. about each control will be added to this structure.  This is the
  1026. mechanism used to provide turbo-painting.
  1027.  
  1028. After attaching the structure, WM_NCCREATE calls DefDlgProc() and
  1029. returns its value.
  1030.  
  1031.  
  1032. 8.2.1.3  WM_ERASEBKGND
  1033. ----------------------
  1034.  
  1035. This message first sends a WM_CTLCOLOR message with CTLCOLOR_DLG
  1036. to the user's dialog procedure (if any) to get a background brush
  1037. for the dialog.  If zero is returned, the chiseled-steel brush is
  1038. used.  But before painting the background, the control structure
  1039. is iterated and any Borland group shades and Borland static text
  1040. controls are painted with a gray background (for speed).  (Note,
  1041. however, that the brush used for group shades may be modified by
  1042. an additional CTLCOLOR-like message, as described in section
  1043. 6.1.4.2)
  1044.  
  1045. The background brush is realigned with the top left corner of the
  1046. dialog window and the dialog background is painted with it,
  1047. excluding any rectangles that were painted for group shades and
  1048. static text controls.  Finally, WM_ERASEBKGND returns TRUE, to
  1049. indicate to Windows that no further erasing is necessary.
  1050.  
  1051.  
  1052. 8.2.1.4  WM_PAINT
  1053. -----------------
  1054.  
  1055. This message iterates through the control structure described
  1056. above and paints each of the Borland controls.  For each control
  1057. that is painted, its window is validated, so that it won't itself
  1058. get WM_PAINT or WM_ERASE messages.
  1059.  
  1060. After all Borland controls are painted, a thin frame is drawn
  1061. around the dialog to provide a sense of depth, and zero is
  1062. returned.
  1063.  
  1064.  
  1065. 8.2.1.5  WM_DESTROY
  1066. -------------------
  1067.  
  1068. This message simply frees the control list attached to the dialog
  1069. window and then calls DefDlgProc(), returning its value.
  1070.  
  1071.  
  1072. 8.2.2    Commands unique to BWCC
  1073. --------------------------------
  1074.  
  1075. [none]
  1076.  
  1077.  
  1078. 9        Using BWCC controls in nondialog windows
  1079. -------------------------------------------------
  1080.  
  1081. If you want your nondialog windows to look like the BorDlg
  1082. windows (with the steel-gray background and light gray background
  1083. for static controls), BWCC.DLL provides two functions that
  1084. replace the Windows standard "Def" window functions and that
  1085. should be called in place of them:
  1086.  
  1087. - For MDI child windows, call BWCCDefMDIChildProc instead of the
  1088.   Windows standard function DefMDIChildProc.
  1089.  
  1090. - For all other windows, call BWCCDefWindowProc instead of the
  1091.   Windows standard function DefWindowProc.
  1092.  
  1093. As described earlier for BWCCDefDlgProc, your window proc must
  1094. call either BWCCDefMDIChildProc or BWCCDefWindowProc for the
  1095. following messages:
  1096.  
  1097. - WM_CTLCOLOR
  1098. - WM_NCCREATE
  1099. - WM_NCDESTROY
  1100. - WM_PAINT
  1101. - WM_ERASEBKGND
  1102.  
  1103. Note: BWCC does not provide a replacement function for
  1104. DefFrameProc.
  1105.  
  1106.  
  1107. 10       Miscellaneous functions
  1108. --------------------------------
  1109.  
  1110. BWCC.DLL exports three additional functions that you might find
  1111. useful.
  1112.  
  1113.  
  1114. 10.1      BWCCGetVersion
  1115. ------------------------
  1116.  
  1117. This function, which takes no parameters, returns the current
  1118. version of BWCC.DLL. The value it returns is defined in BWCC.H as
  1119. BWCCVERSION.
  1120.  
  1121.  
  1122. 10.2      BWCCGetPattern
  1123. ------------------------
  1124.  
  1125. This function, which takes no parameters, returns a handle to the
  1126. brush used to paint the background of BorDlg class dialogs. Since
  1127. this brush could be a patterned brush, you must align it by
  1128. calling UnrealizeObject and SetBrushOrg before selecting it into
  1129. a device context. Do not delete this brush by calling
  1130. DeleteObject!
  1131.  
  1132.  
  1133. 10.3      BWCCMessageBox
  1134. ------------------------
  1135.  
  1136. This function, which is call-compatible with the Windows standard
  1137. function MessageBox, displays a message box that is consistent
  1138. with the Borland dialog box style.
  1139.  
  1140.  
  1141.            ========= END OF FILE BWCCAPI.RW =========
  1142.